.TH backintime-config 1 "Feb 2024" "version 1.4.4-dev" "USER COMMANDS"
.SH NAME
config \- BackInTime configuration files.
.SH SYNOPSIS
~/.config/backintime/config
.br
/etc/backintime/config
.SH DESCRIPTION
Back In Time was developed as pure GUI program and so most functions are only
usable with backintime-qt. But it is possible to use
Back In Time e.g. on a headless server. You have to create the configuration file
(~/.config/backintime/config) manually. Look inside /usr/share/doc/backintime\-common/examples/ for examples.
.PP
The configuration file has the following format:
.br
keyword=arguments
.PP
Arguments don't need to be quoted. All characters are allowed except '='.
.PP
Run 'backintime check-config' to verify the configfile, create the snapshot folder and crontab entries.
.SH POSSIBLE KEYWORDS
.IP "\fIglobal.hash_collision\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Internal value used to prevent hash collisions on mountpoints. Do not change this.
.PP
Default: 0
.RE

.IP "\fIglobal.language\fR" 6
.RS
Type: str       Allowed Values: text
.br
Language code (ISO 639) used to translate the user interface. If empty the operating systems current local is used. If 'en' the translation is not active and the original English source strings are used. It is the same if the value is unknown.
.PP
Default: ''
.RE

.IP "\fIglobal.use_flock\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Prevent multiple snapshots (from different profiles or users) to be run at the same time
.PP
Default: false
.RE

.IP "\fIprofile<N>.name\fR" 6
.RS
Type: str       Allowed Values: text
.br
Name of this profile.
.PP
Default: Main profile
.RE

.IP "\fIprofile<N>.schedule.custom_time\fR" 6
.RS
Type: str       Allowed Values: comma separated int (8,12,18,23) or */3
.br
Custom hours for cronjob. Only valid for \fIprofile<N>.schedule.mode\fR = 19 
.PP
Default: 8,12,18,23
.RE

.IP "\fIprofile<N>.schedule.day\fR" 6
.RS
Type: int       Allowed Values: 1-28
.br
Which day of month the cronjob should run? Only valid for \fIprofile<N>.schedule.mode\fR >= 40
.PP
Default: 1
.RE

.IP "\fIprofile<N>.schedule.mode\fR" 6
.RS
Type: int       Allowed Values: 0|1|2|4|7|10|12|14|16|18|19|20|25|27|30|40|80
.br
Which schedule used for crontab. The crontab entry will be generated with 'backintime check-config'.
.br
 0 = Disabled
.br
 1 = at every boot
.br
 2 = every 5 minute
.br
 4 = every 10 minute
.br
 7 = every 30 minute
.br
10 = every hour
.br
12 = every 2 hours
.br
14 = every 4 hours
.br
16 = every 6 hours
.br
18 = every 12 hours
.br
19 = custom defined hours
.br
20 = every day
.br
25 = daily anacron
.br
27 = when drive get connected
.br
30 = every week
.br
40 = every month
.br
80 = every year 
.PP
Default: 0
.RE

.IP "\fIprofile<N>.schedule.repeatedly.period\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
How many units to wait between new snapshots with anacron? Only valid for \fIprofile<N>.schedule.mode\fR = 25|27
.PP
Default: 1
.RE

.IP "\fIprofile<N>.schedule.repeatedly.unit\fR" 6
.RS
Type: int       Allowed Values: 10|20|30|40
.br
Units to wait between new snapshots with anacron.
.br
10 = hours
.br
20 = days
.br
30 = weeks
.br
40 = months
.br
Only valid for \fIprofile<N>.schedule.mode\fR = 25|27
.PP
Default: 20
.RE

.IP "\fIprofile<N>.schedule.time\fR" 6
.RS
Type: int       Allowed Values: 0-2400
.br
Position-coded number with the format "hhmm" to specify the hour and minute the cronjob should start (eg. 2015 means a quarter past 8pm). Leading zeros can be omitted (eg. 30 = 0030). Only valid for \fIprofile<N>.schedule.mode\fR = 20 (daily), 30 (weekly), 40 (monthly) and 80 (yearly)
.PP
Default: 0
.RE

.IP "\fIprofile<N>.schedule.weekday\fR" 6
.RS
Type: int       Allowed Values: 1 = monday \- 7 = sunday
.br
Which day of week the cronjob should run? Only valid for \fIprofile<N>.schedule.mode\fR = 30
.PP
Default: 7
.RE

.IP "\fIprofile<N>.snapshots.backup_on_restore.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Rename existing files before restore into FILE.backup.YYYYMMDD
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.bwlimit.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Limit rsync bandwidth usage over network. Use this with mode SSH. For mode Local you should rather use ionice.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.bwlimit.value\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Bandwidth limit in KB/sec.
.PP
Default: 3000
.RE

.IP "\fIprofile<N>.snapshots.continue_on_errors\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Continue on errors. This will keep incomplete snapshots rather than deleting and start over again.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.copy_links\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
When symlinks are encountered, the item that they point to (the reference) is copied, rather than the symlink.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.copy_unsafe_links\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
This tells rsync to copy the referent of symbolic links that point outside the copied tree.  Absolute symlinks are also treated like ordinary files.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.cron.ionice\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run cronjobs with 'ionice \-c2 \-n7'. This will give BackInTime the lowest IO bandwidth priority to not interrupt any other working process.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.cron.nice\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run cronjobs with 'nice \-n19'. This will give BackInTime the lowest CPU priority to not interrupt any other working process.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.cron.redirect_stderr\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
redirect stderr to /dev/null in cronjobs
.PP
Default: False
.RE

.IP "\fIprofile<N>.snapshots.cron.redirect_stdout\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
redirect stdout to /dev/null in cronjobs
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.dont_remove_named_snapshots\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Keep snapshots with names during smart_remove.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.exclude.bysize.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Enable exclude files by size.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.exclude.bysize.value\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Exclude files bigger than value in MiB. With 'Full rsync mode' disabled this will only affect new files because for rsync this is a transfer option, not an exclude option. So big files that has been backed up before will remain in snapshots even if they had changed.
.PP
Default: 500
.RE

.IP "\fIprofile<N>.snapshots.exclude.<I>.value\fR" 6
.RS
Type: str       Allowed Values: file, folder or pattern (relative or absolute)
.br
Exclude this file or folder. <I> must be a counter starting with 1
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.exclude.size\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Quantity of profile<N>.snapshots.exclude.<I> entries.
.PP
Default: \-1
.RE

.IP "\fIprofile<N>.snapshots.include.<I>.type\fR" 6
.RS
Type: int       Allowed Values: 0|1
.br
Specify if \fIprofile<N>.snapshots.include.<I>.value\fR is a folder (0) or a file (1).
.PP
Default: 0
.RE

.IP "\fIprofile<N>.snapshots.include.<I>.value\fR" 6
.RS
Type: str       Allowed Values: absolute path
.br
Include this file or folder. <I> must be a counter starting with 1
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.include.size\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Quantity of profile<N>.snapshots.include.<I> entries.
.PP
Default: \-1
.RE

.IP "\fIprofile<N>.snapshots.keep_only_one_snapshot.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
NOT YET IMPLEMENTED. Remove all snapshots but one.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.local.nocache\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run rsync on local machine with 'nocache'. This will prevent files from being cached in memory.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.local_encfs.path\fR" 6
.RS
Type: str       Allowed Values: absolute path
.br
Where to save snapshots in mode 'local_encfs'.
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.log_level\fR" 6
.RS
Type: int       Allowed Values: 1-3
.br
Log level used during takeSnapshot.
.br
1 = Error
.br
2 = Changes
.br
3 = Info
.PP
Default: 3
.RE

.IP "\fIprofile<N>.snapshots.min_free_inodes.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Remove snapshots until \fIprofile<N>.snapshots.min_free_inodes.value\fR free inodes in % is reached.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.min_free_inodes.value\fR" 6
.RS
Type: int       Allowed Values: 1-15
.br
Keep at least value % free inodes.
.PP
Default: 2
.RE

.IP "\fIprofile<N>.snapshots.min_free_space.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Remove snapshots until \fIprofile<N>.snapshots.min_free_space.value\fR free space is reached.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.min_free_space.unit\fR" 6
.RS
Type: int       Allowed Values: 10|20
.br
10 = MB
.br
20 = GB
.PP
Default: 20
.RE

.IP "\fIprofile<N>.snapshots.min_free_space.value\fR" 6
.RS
Type: int       Allowed Values: 1-99999
.br
Keep at least value + unit free space.
.PP
Default: 1
.RE

.IP "\fIprofile<N>.snapshots.mode\fR" 6
.RS
Type: str       Allowed Values: local|local_encfs|ssh|ssh_encfs
.br
 Use mode (or backend) for this snapshot. Look at 'man backintime'  section 'Modes'.
.PP
Default: local
.RE

.IP "\fIprofile<N>.snapshots.<MODE>.password.save\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Save password to system keyring (gnome-keyring or kwallet). <MODE> must be the same as \fIprofile<N>.snapshots.mode\fR
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.<MODE>.password.use_cache\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Cache password in RAM so it can be read by cronjobs. Security issue: root might be able to read that password, too. <MODE> must be the same as \fIprofile<N>.snapshots.mode\fR
.PP
Default: true if home is not encrypted
.RE

.IP "\fIprofile<N>.snapshots.no_on_battery\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Don't take snapshots if the Computer runs on battery.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.notify.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Display notifications (errors, warnings) through libnotify.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.one_file_system\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Use rsync's "--one-file-system" to avoid crossing filesystem boundaries when recursing.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.path\fR" 6
.RS
Type: str       Allowed Values: absolute path
.br
Where to save snapshots in mode 'local'. This path must contain a folderstructure like 'backintime/<HOST>/<USER>/<PROFILE_ID>'
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.path.host\fR" 6
.RS
Type: str       Allowed Values: text
.br
Set Host for snapshot path
.PP
Default: local hostname
.RE

.IP "\fIprofile<N>.snapshots.path.profile\fR" 6
.RS
Type: str       Allowed Values: 1-99999
.br
Set Profile-ID for snapshot path
.PP
Default: current Profile-ID
.RE

.IP "\fIprofile<N>.snapshots.path.user\fR" 6
.RS
Type: str       Allowed Values: text
.br
Set User for snapshot path
.PP
Default: local username
.RE

.IP "\fIprofile<N>.snapshots.path.uuid\fR" 6
.RS
Type: str       Allowed Values: text
.br
Devices uuid used to automatically set up udev rule if the drive is not connected.
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.preserve_acl\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Preserve ACL. The  source  and  destination  systems must have compatible ACL entries for this option to work properly.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.preserve_xattr\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Preserve extended attributes (xattr).
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.remove_old_snapshots.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Remove all snapshots older than value + unit
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.remove_old_snapshots.unit\fR" 6
.RS
Type: int       Allowed Values: 20|30|80
.br
20 = days
.br
30 = weeks
.br
80 = years
.PP
Default: 80
.RE

.IP "\fIprofile<N>.snapshots.remove_old_snapshots.value\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Snapshots older than this times units will be removed
.PP
Default: 10
.RE

.IP "\fIprofile<N>.snapshots.rsync_options.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Past additional options to rsync
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.rsync_options.value\fR" 6
.RS
Type: str       Allowed Values: text
.br
rsync options. Options must be quoted e.g. \-\-exclude-from="/path/to/my exclude file"
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.smart_remove\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run smart_remove to clean up old snapshots after a new snapshot was created.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.smart_remove.keep_all\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Keep all snapshots for X days.
.PP
Default: 2
.RE

.IP "\fIprofile<N>.snapshots.smart_remove.keep_one_per_day\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Keep one snapshot per day for X days.
.PP
Default: 7
.RE

.IP "\fIprofile<N>.snapshots.smart_remove.keep_one_per_month\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Keep one snapshot per month for X month.
.PP
Default: 24
.RE

.IP "\fIprofile<N>.snapshots.smart_remove.keep_one_per_week\fR" 6
.RS
Type: int       Allowed Values: 0-99999
.br
Keep one snapshot per week for X weeks.
.PP
Default: 4
.RE

.IP "\fIprofile<N>.snapshots.smart_remove.run_remote_in_background\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
If using mode SSH or SSH-encrypted, run smart_remove in background on remote machine
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.ssh.check_commands\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Check if all commands (used during takeSnapshot) work like expected on the remote host.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.ssh.check_ping\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Check if the remote host is available before trying to mount.
.PP
Default: true
.RE

.IP "\fIprofile<N>.snapshots.ssh.cipher\fR" 6
.RS
Type: str       Allowed Values: default | aes192-cbc | aes256-cbc | aes128-ctr | aes192-ctr | aes256-ctr | arcfour | arcfour256 | arcfour128 | aes128-cbc | 3des-cbc | blowfish-cbc | cast128-cbc
.br
Cipher that is used for encrypting the SSH tunnel. Depending on the environment (network bandwidth, cpu and hdd performance) a different cipher might be faster.
.PP
Default: default
.RE

.IP "\fIprofile<N>.snapshots.ssh.host\fR" 6
.RS
Type: str       Allowed Values: IP or domain address
.br
Remote host used for mode 'ssh' and 'ssh_encfs'.
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.ssh.ionice\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run rsync and other commands on remote host with 'ionice \-c2 \-n7'
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.ssh.max_arg_length\fR" 6
.RS
Type: int       Allowed Values: 0, >700
.br
Maximum command length of commands run on remote host. This can be tested for all ssh profiles in the configuration with 'python3 /usr/share/backintime/common/sshMaxArg.py [initial_ssh_cmd_length]'.
.br
0 = unlimited
.PP
Default: 0
.RE

.IP "\fIprofile<N>.snapshots.ssh.nice\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run rsync and other commands on remote host with 'nice \-n19'
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.ssh.nocache\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run rsync on remote host with 'nocache'. This will prevent files from being cached in memory.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.ssh.path\fR" 6
.RS
Type: str       Allowed Values: absolute or relative path
.br
Snapshot path on remote host. If the path is relative (no leading '/') it will start from remote Users homedir. An empty path will be replaced with './'.
.PP
Default: ''
.RE

.IP "\fIprofile<N>.snapshots.ssh.port\fR" 6
.RS
Type: int       Allowed Values: 0-65535
.br
SSH Port on remote host.
.PP
Default: 22
.RE

.IP "\fIprofile<N>.snapshots.ssh.prefix.enabled\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Add prefix to every command which run through SSH on remote host.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.ssh.prefix.value\fR" 6
.RS
Type: str       Allowed Values: text
.br
Prefix to run before every command on remote host. Variables need to be escaped with \\$FOO. This doesn't touch rsync. So to add a prefix for rsync use \fIprofile<N>.snapshots.rsync_options.value\fR with --rsync-path="FOO=bar:\\$FOO /usr/bin/rsync"
.PP
Default: 'PATH=/opt/bin:/opt/sbin:\\$PATH'
.RE

.IP "\fIprofile<N>.snapshots.ssh.private_key_file\fR" 6
.RS
Type: str       Allowed Values: absolute path to private key file
.br
Private key file used for password-less authentication on remote host. 
.PP
Default: ~/.ssh/id_dsa
.RE

.IP "\fIprofile<N>.snapshots.ssh.user\fR" 6
.RS
Type: str       Allowed Values: text
.br
Remote SSH user
.PP
Default: local users name
.RE

.IP "\fIprofile<N>.snapshots.take_snapshot_regardless_of_changes\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Create a new snapshot regardless if there were changes or not.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.use_checksum\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Use checksum to detect changes rather than size + time.
.PP
Default: false
.RE

.IP "\fIprofile<N>.snapshots.user_backup.ionice\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Run BackInTime with 'ionice \-c2 \-n7' when taking a manual snapshot. This will give BackInTime the lowest IO bandwidth priority to not interrupt any other working process.
.PP
Default: false
.RE

.IP "\fIprofile<N>.user_callback.no_logging\fR" 6
.RS
Type: bool      Allowed Values: true|false
.br
Do not catch std{out|err} from user-callback script. The script will only write to current TTY. Default is to catch std{out|err} and write it to syslog and TTY again.
.PP
Default: false
.RE

.IP "\fIprofiles\fR" 6
.RS
Type: str       Allowed Values: int separated by colon (e.g. 1:3:4)
.br
All active Profiles (<N> in profile<N>.snapshots...).
.PP
Default: 1
.RE

.IP "\fIprofiles.version\fR" 6
.RS
Type: int       Allowed Values: 1
.br
Internal version of profiles config.
.PP
Default: 1
.RE
.SH SEE ALSO
backintime, backintime-qt.
.PP
Back In Time also has a website: https://github.com/bit-team/backintime
.SH AUTHOR
This manual page was written by BIT Team(<bit-dev@python.org>).
